package com.hsu.hsurpc.protocal;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 协议消息结构
 * @Author Hsu琛君珩
 * @Date 2024-09-23 10:06
 * @Description
 * @Version: v1.0.0
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ProtocolMessage<T> {

    /**
     * 消息头
     */
    private Header header;

    /**
     * 消息体（请求或响应对象）
     */
    private T body;

    /**
     * 协议消息头
     */
    @Data
    public static class Header {

        /**
         * 魔数，保证协议合法性与安全性
         */
        private byte magic;

        /**
         * 协议版本号
         */
        private byte version;

        /**
         * 序列化器类型
         */
        private byte serializer;

        /**
         * 消息类型（请求、响应等）
         */
        private byte type;

        /**
         * 状态响应码
         */
        private byte status;

        /**
         * 请求唯一标识符
         */
        private long requestId;

        /**
         * 消息体长度
         */
        private int bodyLength;
    }
}
